Detecting Target Objects in a 3D Space

ABSTRACT

Search points in a search space may be projected onto images from cameras imaging different parts of the search space. Subimages, corresponding to the projected search points, may be selected and processed to determine if a target object has been detected. Based on subimages in which target objects are detected, as well as orientation data from cameras capturing images from which the subimages were selected, positions of the target objects in the search space may be determined.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a divisional application of U.S. Ser. No.17/715,194, filed on Apr. 7, 2022 and entitled “Detecting Target Objectsin a 3D Space,” which is a divisional application of U.S. Ser. No.16/779,917, filed on Feb. 3, 2020 and entitled “Detecting Target Objectsin a 3D Space,” the entireties of which are incorporated herein byreference for all purposes.

GOVERNMENT LICENSE RIGHTS

This invention was made with Government support under Contract No.GS00Q14OADU329 awarded by the United States Air Force. The Governmenthas certain rights in this invention.

BACKGROUND

Unmanned aerial vehicles (UAVs), also known as drones, are widely used.Detecting UAVs can be a challenging problem. Although radar is a usefultool, some radars may struggle to detect objects, such as some UAVs,that may be relatively slow-moving and that have small radarcross-sections. Moreover, radar may lack the spatial resolution tosatisfactorily detect and track large numbers of UAVs.

SUMMARY

This Summary is provided to introduce a selection of some concepts in asimplified form as a prelude to the Detailed Description. This Summaryis not intended to identify key or essential features.

Multiple cameras may be arranged in and/or around a search space. Someor all of the cameras may continuously pan and/or tilt to move fields ofview of those cameras to image different portions of the search space. Aplurality of search points in the search space may be selected. Based onorientation data for the cameras, positions of at least some of thesearch points may be projected onto images captured by at least aportion of the cameras. Subimages, corresponding to the projected searchpoint positions, may be selected and processed to determine if a targetobject has been detected. Based on subimages with which target objectsare detected, as well as orientation data from cameras capturing imagesfrom which the subimages were selected, positions of the target objectsin the search space may be determined. The search point positions may berandomly selected and/or may change over time (e.g., each search cycle).If a target object is detected, a portion of the search points may beassigned to the target object and positioned based on a position of thetarget object.

These and other features are described in more detail below.

BRIEF DESCRIPTION OF THE DRAWINGS

Some features are shown by way of example, and not by way of limitation,in the figures of the accompanying drawings and in which like referencenumerals refer to similar elements.

FIG. 1 is a partially schematic plan view of a system for detectingtarget objects.

FIG. 2 is a partially schematic elevational view of the system of FIG. 1.

FIGS. 3A, 3B, and 3C are respective top, side, and front views of anexample camera and pan/tilt mount attached to a pole.

FIG. 3D is a top view of the example camera, pan/tilt mount, and pole ofFIGS. 3A through 3C and showing the camera panned relative to theorientation shown in FIG. 3A.

FIG. 3E is a side view of the example camera, pan/tilt mount, and poleof FIGS. 3A through 3C and showing the camera tilted relative to theorientation shown in FIG. 3B.

FIG. 4A shows an example calibration image.

FIG. 4B shows a portion of the example calibration image of FIG. 4A.

FIG. 5A is a partially schematic elevational view of an example cameraat a time of capturing an image of an example target object.

FIG. 5B is a partially schematic plan view of the example camera of FIG.5A at the time of capturing the image of the example target object.

FIG. 5C is a partially schematic view of an example image captured by acamera at the time corresponding to FIGS. 5A and 5B.

FIG. 6 is a partially schematic plan view of the system of FIG. 1 ,showing a plurality of search points.

FIG. 7 is a partially schematic elevational view of the system of FIG. 1showing a plurality of search points.

FIGS. 8A and 8B are a flow chart showing an example method for detectingtarget objects in a search space.

FIGS. 9A and 9B shows examples of subimages.

FIGS. 10A and 10B are partially schematic elevational and plan views,respectively, showing overlapping fields of view (FOVs) of two cameras.

FIG. 11 is a flow chart showing an example of additional steps that maybe performed as part of the example method shown in FIGS. 8A and 8B.

FIG. 12 is a flow chart showing an example of additional steps that maybe performed as part of the example method shown in FIGS. 8A and 8B.

FIG. 13 is a partially schematic elevational view of the system of FIG.1 after redistribution of search points.

FIG. 14 is a block diagram of an example computer.

FIGS. 15A, 15B, and 15C are graphs showing estimated RMS error and errorellipsoid dimensions based on simulations.

FIGS. 15D, 15E, and 15F are graphs showing estimated RMS error and errorellipsoid dimensions based on additional simulations.

DETAILED DESCRIPTION

Arrays of cameras may be used to distinguish, detect, and/or tracktarget objects such as small UAVs. Data from multiple cameras capturingimages of a target object may be used to determine an XYZ position ofthe target object in a search space. Unlike many radars, which may haveerrors of 1 to 2 degrees when determining azimuth or elevation of adetected object, a camera may have an angular resolution on the order of0.01 degrees. Although a single camera may be less able to determinerange than radar, range may be determined if at least 2 cameras captureimages of a target object.

FIG. 1 is a partially schematic plan view of a system 10 configured todetect target objects (e.g., UAVs) that may enter a search space 11. Thesearch space 11 may cover an area A extending across a horizontal planecorresponding to the X and Y axes shown in FIG. 1 . The Z axis shown inFIG. 1 axis may correspond to a vertical axis and may, in combinationwith the X, Y, or other horizontal axis, define one or more verticalplanes. The search space 11 may, as explained in more detail below,extend vertically over the area A. A facility (e.g., a military base orcamp) be located in the area A, and it may be desirable to protect thefacility from UAVs. The system 10, upon detecting a UAV or other targetobject in the search space 11, may output information (e.g., coordinatesdefining a location of the target object) to one or more other systemsso that the target object may be tracked and/or otherwise acted upon(e.g., shot down).

The system 10 may comprise a plurality of cameras (“C”). In the exampleof FIG. 1 , the system 10 comprises 12 cameras 14.1 through 14.12. Forconvenience, the cameras 14.1 through 14.12 may be referred tocollectively as the cameras 14 and/or generically as the (or a) camera14. The cameras 14 may be equally spaced around a circular boundary ofthe area A. However, this is not required. In other exampleconfigurations, the cameras 14 may not be equally distributed, some orall of the cameras 14 may be displaced inward or outward from a boundaryof an area covered by a search space, and/or there may be more or fewercameras 14. An area covered by a search space need not be circular, andmay have any regular or irregular shape.

Each of the cameras 14 may have a field of view (FOV). The FOV of acamera 14 may be a frustoconical or frusto-pyramidal spatial region,extending from the camera 14, that can be imaged by an image sensor ofthe camera 14. The orientation of an FOV of a camera 14 may change asthat camera 14 is moved. To avoid confusing FIG. 1 with unneededdetails, FOV lines are only included for the cameras 14.2, 14.4, and14.12. The lengths of lines used to indicate FOVs in the drawings arenot intended to indicate depths associated with FOVs. The widths,depths, and shapes of the FOVs of the cameras 14 may all be the same, orone or more of the cameras 14 may have an FOV having a width, depth,and/or shape different from that of the FOV(s) of one or more othercameras 14.

Each of the cameras 14 may pan by rotating about a first (e.g., avertical) axis. Each of the cameras 14 may also tilt by rotating about asecond (e.g., a horizontal axis). For example, the camera 14.12 is shownpanned toward the camera 14.11 and the camera 14.2 is shown pannedtoward the camera 14.3. Additional details of the cameras 14 aredescribed below in connection with FIGS. 3A through 3E. Each of thecameras 14 may be configured to continuously pan back and forth and/orcontinuously tilt up and down so as to capture images of all orsubstantially all of the search space 11 during the course of one ormore search cycles. The pan and/or tilt of each camera may be random,regular (e.g., periodic), and/or otherwise controlled.

An area associated with a search space may be tens, hundreds, orthousands of meters across. For example, a distance D separating camerason opposite sides of the area A (e.g., the cameras 14.1 and 14.7) may be50 meters, 100 meters, 500 meters, 1000 meters, 1500 meters, or anothervalue. A size of an area such as area A may similarly have a wide rangeof values. For example, the area A may have a size of at least 2000square meters (m²), at least 8000 m², at least 200,000 m², at least500,000 m², at least 785,000 m², at least 1,767,000 m², or anothervalue.

Each of the cameras 14 may be in communication with one or morecomputers 18. Although FIG. 1 only shows communication paths between thecomputer 18 and the camera 14.5 and between the computer 18 and thecamera 14.6, similar communication paths may extend between the computer18 and each of the cameras 14. The communication paths may be wiredand/or wireless. The computer 18 and the cameras 14 may be nodes of anetwork. Data that may be transmitted from a camera 14 to the computer18 via one of the communication paths may comprise image data for animage captured by the camera 14, values for pan and tilt of the camera14 at the time of an image capture, metadata (e.g., time/date) for a fora captured image, status and/or error reports for the camera, etc. Datathat may be transmitted to a camera 14 may comprise a pan instruction, atilt instruction, an instruction to capture an image, an instruction toprovide image data, an instruction to provide pan and/or tilt values,and/or other information. The computer 18 may also provide data in theform of programming instructions to a camera 14. For example, eachcamera 14 may comprise a separate control device that executesprogramming instructions to control pan and/or tilt actuators, tocontrol zoom-in and/or zoom-out, to control aperture opening, and/or tocontrol other operations of the camera 14. Those programminginstructions, and/or updates or modifications thereto, may be downloadedto a camera 14 by the computer 18.

FIG. 2 is a partially schematic elevational view, from the locationindicated in FIG. 1 , of the system 10. The X, Y, and Z axes shown inFIG. 2 are the same as those shown in FIG. 1 . For convenience, only thecameras 14.1 and 14.7 are included in FIG. 2 , but the other cameras 14may have heights above the ground surface G similar to those of thecameras 14.1 and 14.7. The cameras 14.1 and 14.7 are both tilted upward.Also shown in FIG. 2 is a ground surface G. The search space 11 is shownin FIG. 2 as a hemispherical region above the ground surface G. However,the shape of a search space need not be hemispherical and may have anyshape. Also shown in FIG. 2 is a center pixel vector VCP(14.7)associated with the camera 14.7. Center pixel vectors are furtherdescribed below.

FIG. 3A is a partially schematic top view showing an example camera 14mounted for use in the system 100. FIGS. 3B and 3C are partiallyschematic side and front views, respectively, of the mounted examplecamera 14. The camera 14 may comprise a lens/aperture assembly 20. Thelens/aperture assembly 20 may be adjustable to control a width and/orheight of the FOV, and/or depth of the FOV (e.g., a zoom). Thelens/aperture assembly may be controlled by a servo or other actuator,not shown, that can be controlled remotely (e.g., by the computer 18).The camera 14 may attached to a pan/tilt mount 21, and the mount 21 maybe attached to a post 25 or other support. The mount 21 may include abase 22, a main body 23, and a camera mounting bracket 24. The main body23 may be rotatably coupled to the base 22 and configured to rotateabout a pan axis APAN. The bracket 24 may be rotatably coupled to themain body 23 and configured to rotate about a tilt axis ATILT. The tiltaxis ATILT, which may pass through the center of a pivotal couplingbetween the bracket 24 and the main body 23, may be orthogonal to, butrotatable about, the pan axis APAN. Main body 23 may contain actuators(e.g., stepper motors, servos, and/or other mechanical actuators) torotate the main body 23 relative to the base 24, and to rotate thebracket 24 relative to the main body 23, in response to input controlsignals. The mount 21 may further comprise pan and tilt encoders. Thepan encoder may output signals indicative of the pan angle (e.g., anangle relative to true North or other calibration reference) of themount 21. The tilt encoder may output signals indicative of the tiltangle (e.g., an angle relative to a horizontal plane or othercalibration reference) of the mount 21. Pan/tilt camera mounts,including pan/tilt camera mounts with built-in pan and tilt encoders,are commercially-available components.

FIG. 3D is a top view of the example camera 14 similar to FIG. 3A, butshowing the mount 21 and the camera 14 panned relative to theorientation shown in FIG. 3A. FIG. 3E is a side view of the examplecamera 14 similar to FIG. 3B, but showing the mount 21 and the camera 14tilted relative to the orientation shown in FIG. 3B. Although FIG. 3Donly shows panning relative to FIG. 3A and FIG. 3E only shows tiltingrelative to FIG. 3B, this is only for convenience in the drawings. Themount 21, with the mounted camera 14, may simultaneously pan and tilt.

Each combination of a camera 14 and a mount 21 may comprise a dedicatedcontrol device 30, which for convenience is only shown in FIG. 3B. Thecontrol device 30 may comprise a computing device configured to executeinstructions to control operations of the camera 14 and/or of the mount21. For example, the control device 30 may execute instructions (e.g.,previous provided by the computer 18) that cause the control device 30to output control signals to the mount 21 so as to control pan and tiltmovements. As another example, the control device 30 may executeinstructions to perform processing of images captured by the camera 14.The control device 30 may also store images captured by the camera 14.Such processing may comprise, for example, use of one or more knownalgorithms to correct lens distortion. The control device 30 maycommunicate (e.g., via a network) with the computer 18. Instead of, orin addition to, a single camera 14/mount 21 combination comprising adedicated control device 30, a single control device 30 may controland/or perform processing for multiple camera 14/mount 21 combinations.Also or alternatively, a control device 30 may be omitted and allcontrol and processing performed by the computer 18

Each camera 14 may comprise an image sensor, e.g., an imaging elementsuch as a charged-coupled device (CCD) or a complimentary metal oxidesemiconductor (CMOS). The image sensor may comprise pixels arranged in aknown pattern. For example, an image sensor may comprise an array ofpixels arranged in columns and rows (e.g., an 1920 column by 1280 rowarray). The pixels of the image sensor may correspond to positions in animage captured by a camera with that image sensor. A center pixel of animage sensor array, or a group of center pixels, may be determined andmay represent an end point of a center pixel vector such as the centerpixel vector VCP(14.7) shown in FIG. 2 . If the spatial position (e.g.,XYZ coordinates), pan angle, and tilt angle of a camera 14 are known(e.g., based on calibration such as described below), the location andorientation of a center pixel vector may be determined for that camera14. Other pixels of the image sensor for that camera may also correspondto separate vectors, and the relation between those other vectors andthe center pixel vector may be determined (e.g., during calibration).

Based on vectors from camera pixels, a location of a target object inthe search space 11 may be determined. For example, a first camera 14may capture a first image comprising a target object image in a portionof the first image. As used herein, a target object image may refer to aportion of an image (or to a portion of a subimage) that shows and/orotherwise represents a target object in the FOV of a camera thatcaptured the image. Based on a determination of which pixels of thefirst camera 14 imaging element are centered on the target object image,based on the position of the first camera 14, and based on the pan andtilt angles of the first camera 14 when the first image is captured, afirst vector may be determined. That first vector may extend from thefirst camera 14, through the target object, and into the search space11. A second camera 14 may simultaneously capture a second image showingthe target object in a portion of the second image. Based on adetermination of which pixels of the second camera 14 imaging elementare centered on the target object, based on the position of the secondcamera 14, and based on the pan and tilt angles of the second camera 14when the second image is captured, a second vector may be determined.That second vector may extend from the second camera 14, through thetarget object, and into the search space 11. This may be repeated foradditional cameras 14 simultaneously capturing additional images of thetarget object. Based on the determined vectors, a position of the targetobject in the search space 11 may be determined.

The system 10 may be calibrated for use in detection of target objectsin the search space 11. The calibration may comprise, for each of thecameras 14, determining the camera position relative to the search space11. The location of each camera may be described in XYZ coordinatesrelative to fixed point in or near the search space 11, or may bedefined using one or more other coordinate conventions. To determine thelocations of the cameras 14, stakes with fiducial markings may be placedin numerous locations throughout the area A. Using LIDAR and/or otherknown mapping technology, the distances between the stakes, and relativedirections between the stakes, may be determined. With this information,the XYZ locations of the stakes in a local coordinate system for thesearch space 11 may be determined. After each of the cameras 14 isinstalled (e.g., after each of the cameras 14 is attached to a mount 21and the mount 21 is attached on a pole 25 or other support), each cameramay be panned and/or tilted so that, for each of the calibration stakes,a calibration image and related data (e.g., values for pan and tiltangles at image capture) are collected.

FIG. 4A shows an example calibration image 50. The image 50 shows acalibration stake 55 comprising a plate 60 with a center fiducial mark56, a top fiducial mark 57, and a bottom fiducial mark 58. At the timethe stake 55 is placed, the plate 60 may be adjusted so that thefiducial marks 56, 57, and 58 have a known orientation (e.g., vertical).To capture the image 50, the camera 14 may be panned and tilted until animage of the center fiducial mark 56 is near a center pixel of thecamera's image sensor. The camera 14 capturing the image 50 may beimperfectly aligned. In particular, rows of the camera 14 pixels may beat a slight angle to a reference horizontal plane (e.g., the XY plane ofthe XYZ axes shown in FIGS. 1 and 2 ) of the search space 11, andcolumns of the camera 14 pixels are at a slight angle to referencevertical axis (e.g., the Z axis shown in FIGS. 1 and 2 ) of the searchspace 11. This is indicated in FIG. 4A by the broken line 51, whichshows the boundaries the image 50 may have if the camera 14 capturingthe image 50 was perfectly aligned.

FIG. 4B shows a portion of the image 50 containing images of portions ofthe fiducial marks 57 and 58. Blocks of the grid in FIG. 4B representindividual pixels. For convenience, the sizes of the individual pixels52 in the image 50, as well as the sizes of pixels shown in otherdrawings figures, may be exaggerated. In FIG. 4B, the rows of the camera14 pixels 52 capturing the image 50 are arranged horizontally on thepage, and columns of those pixels 52 are arranged vertically on thepage. Based on a known actual distance between the fiducial marks 57 and58, a known actual orientation of the fiducial marks 57 and 58 in thesearch space 11, and a measured distance to the plate 60 from the camera14 that captured the image 50, relationships between vectorsrespectively originating at each of the pixels 52 may be determined forthe camera that captured the image 50.

The locations of each of the cameras 14 may be determined based on panand tilt angles corresponding to captured calibration images, and basedon the relationships determined, for each of the cameras 14, betweenpixels and vectors originating at those pixels. For example, based on afirst calibration image of a first stake 55 captured by a first camera14, and based on pan and tilt angles corresponding to the firstcalibration image, pan and tilt angles corresponding to alignment of thefirst camera 14 center pixel with the center fiducial point 56 of thatfirst stake 55 may be determined. Based on a second calibration image ofa second stake 55 captured by the first camera 14, and based on pan andtilt angles corresponding to the second calibration image, pan and tiltangles corresponding to alignment of the first camera 14 center pixelwith the center fiducial point 56 of that second stake 55 may bedetermined. A difference between the pan angles for the first and secondcalibration images, a difference between the tilt angles for the firstand second images, and the known locations of the first and secondstakes 55 may be used to determine a location of the first camera 14relative to the search space 11, as well as respective relationshipsbetween pan and tilt angles of the first camera and a referencedirection (e.g., true North) and a reference plane (e.g., a horizontalplane). Additional calibration images, captured by the first camera 14of additional stakes 55, may similarly be used, with known locations ofthose additional stakes 55, to obtain additional precision and/oraccuracy for values of the location, of the relation between pan angleand the reference direction, and of the relation between the tilt angleand the reference plane. Similar calibration may be performed foradditional cameras 14.

FIG. 5A is a partially schematic elevational view of an example camera14(i), at a time of capturing an image of an example target objectTO(j), and showing examples of physical quantities represented byvarious data items described below. In connection with the drawings anddescription herein, “i” may be a counter variable corresponding to ani^(th) camera 14, with i having a value between 1 and N. In the exampleof FIGS. 1 and 2 , N=12. Similarly, “j” may be a counter variablecorresponding to a j^(th) target object image within a single image, andmay have an integer value of zero or greater. Although examples of FIGS.5A through 5C show a single target object TO(j) in the FOV of a camera14(i), multiple target objects may be present in a camera FOV and maycorrespond to multiple target object images in a captured image. FIG. 5Bis a partially schematic plan view of the camera 14(i), at the time ofcapturing the image of the target object TO(j), and showing additionalexamples of physical quantities represented by various data itemsdescribed below. FIG. 5C is a partially schematic view of an exampleimage Im(i), captured by the camera 14(i) at the time corresponding toFIGS. 5A and 5B, and showing further examples of physical quantitiesrepresented by various data items described below. The pixels at theedges and center of the image Im(i) are blacked out in FIG. 50 forpurposes of explanation.

Based on calibration, the computer 18 may store, for each of N cameras14 in a system such as the system 10, data such as that summarized inTable 1 and described in further detail after Table 1.

TABLE 1 Data Element Description X(i), Y(i), Z(i) Coordinates forlocation of camera 14(i) CP_Pan_Offset(i) Offset to pan angle for camera14(i) to obtain AzimCP(i) (azimuth of VCP(i)) CP_Tilt_Offset(i) Offsetto tilt angle for camera 14(i) to obtain ElevCP(i) (elevation of VCP(i))F1[PixColΔ(i, j), PixRowΔ(i, j), Function to obtain ElevTO(i, j) (targetobject j ElevCP(i)] elevation) based on PixColΔ(i, j) (no. of pixelcolumns from center pixel of camera 14(i) to center pixel of targetobject j in image Im(i)), PixRowΔ(i, j) (no. of pixel columns fromcenter pixel of camera 14(i) to center pixel of target object j inIm(i)), and ElevCP(i) F2[PixColΔ(i, j), PixRowΔ(i, j), Function toobtain AzimTO(i, j) (target object j AzimCP(i)] azimuth) based onPixColΔ(i, j), PixRowΔ(i, j), and AzimCP(i) PV(c, r)[PixColΔ(c, r),PixRowΔ(c, r), Function to obtain pixel vector PV(c, r) AzimCP(i)]corresponding to pixel c, r (pixel in column c, row r), based onPixColΔ(c, r) (no. of pixel columns from center pixel of camera 14(i) tocolumn c), PixRowΔ(c, r) (no. of pixel rows from center pixel of camera14(i) to row r), and AzimCP(i)

The values X(i), Y(i), and Z(i) may be coordinates, in a coordinatesystem associated with the search space 11, of the location of thecamera 14(i). The data element CP_Pan_Offset(i) may be an offset valuethat may be added to a pan angle, associated with an image Im(i)captured by the camera 14(i), to determine the value AzimCP(i). Thevalue AzimCP(i) may be a value for an azimuth angle, relative to areference horizontal direction, of the vector VCP(i) corresponding tothe center pixel of the camera 14(i) at the time the image Im(i) iscaptured. The data element CP_Tilt_Offset(i) may be an offset value thatmay be added to a tilt angle, associated with the image Im(i), todetermine the value ElevCP(i). The value ElevCP(i) may be a value for anelevation angle, relative to a reference horizontal plane, of the vectorVCP(i) corresponding to the center pixel of the camera 14(i) at the timethe image Im(i) is captured.

The data element F1[PixColΔ(i,j), PixRowΔ(i,j), ElevCP(i)] may be afunction that, based on input elements PixColΔ(i,j), PixRowΔ(i,j),ElevCP(i), outputs a value for ElevTO(i,j). The output value ElevTO(i,j)may be an elevation angle, relative to the reference plane, of a vectorVTO(i,j). The vector VTO(i,j) may be a vector that corresponds to apixel in the center of a target object image of j^(th) target objectTO(j) in the image IM(i). The input value ElevCP(i) is described above.Examples of the input values PixColΔ(i,j) and PixRowΔ(i,j) are shown inFIG. 5C, which shows the image Im(i) captured by the camera 14(i) inFIGS. 5A and 5B. The value PixColΔ(i,j) may be a quantity of pixelcolumns separating a center pixel CP(i) for the camera 14(i) and a pixelPixTO(i,j) corresponding to a centroid of the target object image of thetarget object To(j). The value PixRowΔ(i,j) may be a quantity of pixelrows separating the center pixel CP(i) and the centroid pixelPixTO(i,j). The function of the data element F1[PixColΔ(i,j),PixRowΔ(i,j), ElevCP(i,j)] may comprise a lookup table and may bederived based on the relationships, described above in connection withFIG. 4B, between vectors respectively originating at each of the pixelsof the camera 14(i).

The data element F2[PixColΔ(i,j), PixRowΔ(i,j), AzimCP(i,j)] may be afunction that, based on input elements PixColΔ(i,j), PixRowΔ(i,j), andAzimCP(i), outputs a value for AzimTO(i,j). The output value AzimTO(i,j)may be an azimuth angle, relative to the reference horizontal direction,of the vector VTO(i,j). The input values PixColΔ(i,j), PixRowΔ(i,j), andAzimCP(i) are described above. The function of the data elementF2[PixColΔ(i,j), PixRowΔ(i,j), AzimCP(i)] may comprise a lookup tableand may also be derived based on the relationships, described above inconnection with FIG. 4B, between vectors respectively originating ateach of the pixels of the camera 14(i).

The data element PV(c,r)[PixColΔ(i,c), PixRowΔ(i,r), AzimCP(i)] may be afunction that, based on input elements PixColΔ(c,r) (a number of pixelcolumns separating pixel c,r and the center pixel CP(i)), PixRowΔ(c,r)(a number of pixel rows separating pixel c,r and the center pixelCP(i)), and AzimCP(i), outputs data indicating a vector PV(c,r). Thevector PV(c,r) may be a vector, corresponding to a pixel at column c,row r, located in the FOV of camera 14(i). A vector PV(c,r) may be anedge vector corresponding to a pixel at the edge of a camera 14 imagingelement. For example, and for a camera 14(i) having an imaging elementwith C columns and R rows of pixels, c may have values from 1 to C and rmay have values from 1 to R. Edge vectors at the corners of the FOV maybe PV(1,1) (corresponding to pixel 1,1), PV(C,1) (corresponding to pixelc,1), PV(1,R) (corresponding to pixel 1,R), and PV(C,R) (correspondingto pixel C,R). Between each of the corners, edge vectors may bedetermined for some or all edge pixels between those corners. Forexample, an edge vector PV(c1,1) may correspond to edge pixel c1,1between pixels 1,1 and C,1 (with 1<c1<C), an edge vector PV(C,r2) maycorrespond to edge pixel C,r2 between pixels C,1 and C,R (with 1<r2<R),an edge vector PV(c2,R) may correspond to edge pixel c2,R between pixels1,R and C,R (with 1<c2<C), and an edge vector PV(1,r1) may correspond toedge pixel 1,r1 between pixels 1,1 and 1,R (with 1<r1<R).

The system 10 may operate using search cycles. During a search cycle,each of the cameras 14(i) may simultaneously capture an image Im(i).Each of the cameras 14(i) may store the image Im(i) that it captures, aswell as values for the pan angle (pan(i)) and the tilt angle (tilt(i))at the time the image Im(i) was captured. Based on an image Im(i) and onvalues for pan(i) and tilt(i), as well as data described above inconnection with Table 1 and FIGS. 5A through 5C, the computer 18 maydetermine vectors VTO(i,j) for j target object images in the imageIm(i). Each of the vectors VTO(i,j) may comprise, for example, thelocation of the camera 14(i) and the angles AzimTO(i,j) and ElevTO(i,j)for the vector VTO(i,j). Using vectors VTO obtained for multiple cameras14 during the same search cycle, the computer 14 may determine positionsof target objects in the search space 11.

As described in further detail below, various known algorithms can beused to determine whether an image Im(i) comprises target object image.However, such algorithms may be computationally intensive. Performingsuch algorithms for an entire image (e.g., across all pixels of thatimage) may be impractical when trying to track moving objects such asUAVs in real time. If there are multiple moving objects in a searchspace, the challenges may be even greater. To address one or more of thechallenges associated with detecting target objects using multiplecameras, search points may be used to limit the amount of a particularimage Im(i) that must be processed when searching for a target object.

FIG. 6 is a partially schematic plan view of the system 10, similar toFIG. 1 , showing a plurality of search points in the search space 11.FIG. 7 is a partially schematic elevational view, similar to FIG. 2 ,showing a portion of that same plurality of search points. For purposesof explanation, search points are indicated in FIGS. 6 and 7 and inother drawings as dots. However, a search point may be an invisiblepoint in space. For convenience, only a single search point SP(k) islabelled in FIGS. 6 and 7 . In connection with the drawings anddescription herein, “k” may be a counter variable corresponding to ak^(th) search point SP, with k having an integer value between 1 and K.K may, for example, have a value in the hundreds (e.g., K=500, K=600,K=750, K=900, etc.), thousands (e.g., K=1000, K=2000, etc.), ormillions. As explained in more detail below, positions of search pointsmay change (e.g., between every search cycle), but a quantity of searchpoints may remain constant from cycle to cycle.

Each search point SP(k) may correspond to a search point spatialposition SPSP(k) having coordinates X(k), Y(k), Z(k) in the search space11. Each search point spatial position may be assigned by the computer18. For a given search point SP(k) and camera 14(i), and based on thecoordinates of the search point spatial position SPSP(k), on the pan(i)and tilt(i) angles for the current orientation of the camera 14(i), andon the information for the camera 14(i) described in connection withTable 1 and FIGS. 5A through 5C, the computer 18 may geometricallydetermine if the search point SP(k) is in the FOV of the camera 14(i).If the search point SP(k) is in the FOV of the camera 14(i), thecomputer may project that search point SP(k) onto an image Im(i)captured by that camera 14(i). For example, and based on the same dataused to determine if the search point SP(k) is in the camera 14(i) FOV,the computer 18 may geometrically determine a position of the searchpoint SP(k) in the image Im(i). A position of a search point SP(k) in animage Im(i), which may represent the position in the image the searchpoint SP(k) may appear if the search SP(k) were visible, may be referredto as a search point image position SPIP(i,k). Positions in an imagefrom a camera 14(i) may be described, for example, using a coordinatesystem (local to images from that camera 14(i)) based on pixel rows andpixel columns.

Based on a search point image position SPIP(i,k) in an image Im(i), asubimage ImSub(i,k) corresponding to the search point image positionSPIP(i,k) may be selected. The subimage ImSub(i,k) may comprise, forexample, an M×M block of image Im(i) pixels centered on the search pointimage position SPIP(i,k). Example values for M may comprise, forexample, values equal to a sum of 1 added to a power of 2 (e.g., M=9,M=17, M=33, M=65, etc.). The subimage ImSub(i,k) may then be processed,using one or more algorithms described below, for detection of a targetobject (e.g., to determine if the subimage comprises a target objectimage). Although a target object in a camera FOV may not be detected ifthat target object is not sufficiently near a search point, thecomputational load reduction from processing less than entire imagesallows search cycles to be performed more rapidly. If one or more of thecameras 14 change orientation between successive search cycles, and/orif the spatial positions of search points change between successivesearch cycles, the likelihood of capturing a target object in at leastsome images may be increased.

FIGS. 8A and 8B are a flow chart showing an example method for detectingtarget objects in a search space. FIGS. 11 and 12 (described below) showadditional steps of the example method that have been provided asseparate drawing figures for convenience, but that may be part of thesame example method. The method of FIGS. 8A, 8B, 11, and 12 may beperformed for the search space 11 using the system 10. Although variousoperations shown in FIGS. 8A, 8B, 11, and 12 are described as performedby the computer 18, one, some, or all such operations (or parts thereof)may be performed by one or more additional computing devices. The orderof steps shown in FIGS. 8A, 8B, 11, and 12 may be varied, and/or one ormore steps may be omitted, and/or one or more steps may be added.

In step 801, the system 10 may be initialized. As part of step 801, thecomputer 18 may send instructions to the control devices 30 of thecameras 14 for pan and tilt movements of each of the cameras 14. Forexample, a first camera 14 may be instructed to continuously pan backand forth between a first pair of pan angle values over first successivepan time periods, while continuously tilting up and down between a firstpair of tilt angle values over first successive tilt time periods. Asecond camera 14 may be instructed to continuously pan back and forthbetween a second pair of pan angle values over second successive pantime periods, while continuously tilting up and down between a secondpair of tilt angle values over second successive tilt time periods.Additional cameras 14 may be similarly instructed. The ranges of panangles over which the cameras pan may be the same or different, as maythe ranges of tilt angles over which the cameras tilt. For example, onecamera 14 may be instructed to pan back and forth over a relativelynarrow pan range (e.g., 10 degrees) and/or to tilt up and down over arelatively narrow tilt range (e.g., 10 degrees). Another camera 14 maybe instructed to pan back and forth over a relatively wide pan range(e.g., 180 degrees) and/or to tilt up and down over a relatively widetilt range (e.g., 90 degrees). Similarly, the pan time periods of thecameras 14 may be the same or different, as may be the tilt time periodsof the cameras.

Also as part of step 801, the computer 18 may determine a spatialposition, in the search space 11, for each search point SP(k) in a setof K search points. The computer 18 may determine the search pointspatial positions by selecting positions (e.g., XYZ coordinates)distributed throughout the search space 11. The computer 18 may selectthe search point spatial positions randomly, according to one ofmultiple predetermined patterns, and/or in other ways.

From step 801, the computer may proceed to step 802 and begin a searchcycle. A search cycle may begin with step 802 and may comprise steps 802through 815 (FIG. 8B) or 816. As part of step 802, the computer 18 mayinstruct the control devices 30 of all the cameras 14(i), for i=1through i=N, to capture an image Im(i), and to store values for acorresponding pan angle pan(i) and a corresponding tilt angle tilt(i) atthe time the image Im(i) is captured. Based on receiving theinstructions from the computer 18, the control devices 30 may cause eachof the cameras 14 to capture an image and may store the captured imageswith the corresponding pan and tilt angles. The control devices 30 maysend the captured images with the corresponding pan and tilt angles tothe computer 18.

From step 802, the computer may proceed to step 803. As part of step803, the computer 18 may determine, for each of the search points SP(k),each of the cameras 14(i) for which the search point is in the FOV.Depending on the distribution of the search points and on theorientation of the cameras, each search point may be located in the FOVof none, some, or all of the cameras. The below pseudocode shows anexample of an algorithm by which step 803 may be performed.

For k = 1 to k = K  For i = 1 to i = N   If search point spatialposition SPSP(k) is located in portion of    search space 11 defined byFOV of camera 14(i), store    an SPinFOV data element indicating SP(k),SPSP(k),    and camera 14(i)  increment i by 1 increment k by 1

The computer 18 may determine if a search point spatial position SPSP(k)is in a portion of the search space 11 defined by an FOV of camera 14(i)based on data for the camera 14(i) described above in connection withTable 1, and based on the values of pan(i) and tilt(i) for the camera14(i). The computer 18 may, for example determine a vector SPSP(k)-14(i)passing through the search point spatial position SPSP(k) and thespatial coordinates (X(i), Y(i), Z(i)) of the camera 14(i). Based onwhether the vector SPSP(k)-14(i) is between edge vectors for the imageIm(i), the computer 18 may determine whether the search point SP(k) isin the portion of the search space 11 defined by the FOV of the camera14(i).

From step 803, the computer may proceed to step 804. In step 804, andfor each of the search points determined in step 803 to be within theFOV of one or more of the cameras 14, the computer 18 may project thesearch point onto images Im of all cameras 14 for which the search pointis in the FOV. In connection with each projection, the computer 18 maydetermine a search point image position SPIP(i,k). Each search pointimage position SPIP(i,k) may indicate the position, in an image Im(i)having a FOV in which a search point SP(k) is located, of a projectionof the search point SP(k). Although “i,k” is included in “SPIP(i,k)” toindicate that each search point image position may correspond to aspecific image Im(i), from a specific camera 14(i), and a specificsearch point SP(k), there may not be a search point image positioncorresponding to every combination of i and k values.

The computer 18 may, for example, perform step 804 using the dataelements SPinFOV stored in step 803. A data element may comprise anytype of data structure or combination of data structures. As indicatedabove, each data element SPinFOV indicates a search point spatialposition SPSP(k) for a search point SP(k) located in the FOV of a camera14(i). A data element may indicate data by, for example, including acopy of that data, including a pointer to that data, and/or by otherwisereferencing (directly or indirectly) that data. For each SPinFOV dataelement, the computer 18 may determine a vector SPSP(k)-14(i) based onthe indicated search point spatial position SPSP(k) and camera 14(i) andmay then compare that vector SPSP(k)-14(i) to vectors corresponding topixels of the indicated camera 14(i). The vectors to which the vectorSPSP(k)-14(i) is compared may be determined using the data elementPV(c,r) stored for the indicated camera 14(i). The search point imageposition SPIP(i,k) for the SPinFOV data element may be determined basedon the vector PV(c,r) that is the closest match to the vectorSPSP(k)-14(i). The search point image position SPIP(i,k) may be aposition (e.g., specified using pixel column and row values) of theprojected search point SP(k) in the image Im(i) from the indicatedcamera 14(i). Each search point image position SPIP(i,k) may be storedas part of an SPIPde(i,k) data element that also indicates the imageIm(i) in which the search point image position SPIP(i,k) is located andthe camera 14(i) that captured that image Im(i).

From step 804, the computer may proceed to step 805. In step 805, andfor some or all of the search point image positions SPIP(i,k) determinedin step 804, the computer 18 may select a subimage ImSub(i,k). Although“i,k” is included in “ImSub(i,k)” to indicate that each subimage maycorrespond to a specific image Im(i), from a specific camera 14(i), aspecific search point SP(k), and a specific search point image locationSPIP(i,k), there may not be a subimage corresponding to everycombination of i and k values.

For each SPIPde(i,k) data element, the computer 18 may, for example,determine the image Im(i), the camera 14(i), and the search point imageposition SPIP(i,k) indicated by that data element. The computer 18 maythen select, from that image Im(i), an M pixel by M pixel subimagecentered on that search point image position SPIP(i,k). An example of aselected subimage is shown in FIG. 9A. Although M is 25 in FIG. 9A, Mcould be a larger or smaller value. Moreover, a selected subimage neednot be square or perfectly centered on a search point image position.Each subimage ImSub(i,k) may be stored as part of an ImSubde(i,k) dataelement that also indicates the image Im(i) from which the subimageImSub(i,k) was selected, the camera 14(i) that captured that imageIm(i), and the search point image position SPIP(i,k) on which thesubimage ImSub(i,k) is based.

From step 805, the computer may proceed to step 806. In step 806, thecomputer 18 may determine, for each subimage ImSub(i,k), if the subimagecomprises a target object image. FIG. 9A shows an example of a subimagewithout a target object image. FIG. 9B shows an example of a subimageImSub(i,k) that contains a target object image TO_Im. The computer 18may perform step 806 using any of various image processing algorithmsfor blob and/or feature detection and/or classification. Such algorithmsmay, for example, analyze data for multiple image portions (e.g., datafor each of multiple pixels), process the data to eliminate or minimizea background, and determine whether something other than the backgroundis present.

For example, the computer 18 may in step 806 perform sum of normalizeddifference of Gaussians processing for each subimage ImSub(i,k).Normalized Difference of Gaussians is an image processing method thatmay be used to artificially increase contrast of an image. A twodimensional Gaussian bump with a first kernel size (related to the sigma(a) value of the Gaussian (exp(−D²/(2σ²)), where D represents distancein pixels from the center of the bump) may be convolved with an image.Subsequently, the same image may be convolved with a second kernel size.These 2 convolved images may be subtracted in a pixel by pixel manner togenerate a difference image. Another Gaussian bump with a third kernelsize may be convolved with the original image and those values, on aper-pixel basis, divided into the difference image. Withappropriately-selected the kernel sizes (e.g., determined by rule ofthumb and/or by adjusting based on initial test images), salientfeatures may be enhanced, and the results may be somewhat immune to theoriginal brightness or darkness of the image.

As another example, the computer 18 may in step 806 performpulse-coupled neural network (PCNN) image processing for each subimageImSub(i,k). Using this approach, data for an image may feed a lattice ofcells mapped to the image pixels. The cells may be in a non-linearcommunication with their near neighbors. The non-linearity may derivefrom the cells being configured to fire based on the firing of theirneighbors, but only after an exponential decay of their previous valuesfalls below an inhibitory threshold. The firing pulses spread inrepetitious waves across the image, lighting up (e.g., emphasizing)various parts of the image, in turn, based on their visual similaritywith one another. By choosing an appropriate pulse to halt the firingpulses, image segments corresponding to target objects may bedetermined. Depending on which implementation of the network is used,there may be 8 control parameters shared in common among all the cells.A genetic algorithm may be used to set these 8 parameters so that thefinal pixel values, used as a mask, may designate the interestingfeatures (e.g., one or more target objects) of the image. The geneticalgorithm may also determine the pulse on which the network should bestopped for the best segmentation. The PCNN is based on a cat's 7 layerretina. The biological version of the PCNN is thought to account for thefact that cats have excellent night vision.

The above are few examples of algorithms that may be used to processeach subimage ImSub(i,k) in step 806. Any of numerous known algorithmsfor detection of an object (e.g., for distinguishing background from anobject) may be used. Examples include SIFT (Scale Invariant FeatureTransform), SURF (Speeded Up Robust Features), Hasio-Sawchuk Textures,Entropy Images, and Sobel Edge Enhancement. More than one imageprocessing algorithm may be applied in step 806. For example, a firstimage processing algorithm may be used in connection with processing ofsubimages from one or more first cameras, and a second image processingalgorithm may be used in connection with processing of subimages fromone or more second cameras. Also or alternatively, multiple imageprocessing algorithms may be applied to each of one or more subimages.

As part of step 806, and for every target object image that the computer18 determines to be present, the computer 18 may determine a positionTO_centroid of a centroid of that target object image. An example of acentroid position TO_centroid is shown in FIG. 9B. The centroid positionTO_centroid may, for example, be described by a quantity of pixel rowsand columns separating TO_centroid from the SPIP(i,k) corresponding tothe subimage ImSub(i,k) in which the target object image was determined.For each target object representation determined by the computer 18 instep 806, the computer 18 may store a separate TO_det data elementcorresponding to that target object image and to a detection of a targetobject. Each TO_det data element may indicate: an identifier assigned tothat TO_det data element, the corresponding subimage ImSub(i,k) in whichthat target object image was determined, the search point SP(k) and/orthe search point image location SPIP(i,k) corresponding to that subimageImSub(i,k), the centroid position TO_centroid of the target objectimage, the image Im(i) from which the corresponding subimage wasselected, the camera 14(i) that captured that image Im(i), and/or pan(i)and tilt(i) values for that camera 14(i).

From step 806, the computer may proceed to step 807. In step 807, thecomputer 18 may determine, based on the target object images determinedin step 806 (e.g., based on the TO_det data elements stored in step806), a quantity of target objects that are present. Notably, twocameras 14 may simultaneously capture images of regions that comprisethe same search point SP(k), and each of those images may comprise arepresentation of a target object near that search point. However, thosetwo cameras 14 may not be imaging the same target object. FIGS. 10A and10B show an example of how this may occur. FIG. 10A is a partiallyschematic elevational view showing an FOV(14(i 1)) of a camera 14(i 1)and an FOV(14(i 2)) of a camera 14(i 2). FIG. 10B is a partiallyschematic plan view showing the FOV(14(i 1)) of the camera 14(i 1) andthe FOV(14(i 2)) of the camera 14(i 2) at same time as the time of FIG.10A. The FOV(14(i 1)) overlaps with the FOV(14(i 2)). A search pointSP(k) is located in the region of the overlap. A first target object TO1is positioned in the FOV(14(i 1)) between the search point SP(k) and thecamera 14(i 1), but is outside the FOV(14(i 2)). A second target objectTO2 is positioned in the FOV(14(i 2)) between the search point SP(k) andthe camera 14(i 2), but is outside the FOV(14(i 1)). Although the planview of FIG. 10B suggests that both target objects TO1 and TO2 are inthe FOVs of both cameras 14(i 1) and 14(i 2), the tilt of the camerasprevents the camera 14(i 1) from seeing the target object TO2 andprevents the camera 14(i 2) from seeing the target object TO1.

The computer 18 may perform step 807 by, for example, performingadditional steps such as those shown in FIG. 11 (e.g., the steps of FIG.11 may be a subroutine of the algorithm of FIGS. 8A and 8B). In step807.1, the computer 18 may sort and group the target object images,determined in step 806, based on the search points associated with thosetarget object images. The computer 18 may perform this sorting bysorting the TO_det data elements, stored in step 806, based on thesearch point SP(k) indicated by each of the TO_det data elements. Agroup of sorted TO_det data elements may comprise TO_det data elementsthat all indicate the same search point SP(k).

In step 807.2, the computer 18 may select a group of TO_det dataelements. In step 807.3, the computer 18 may flag a first TO_det dataelement in a queue formed from all the TO_det data elements in thecurrently-selected group. In Step 807.4, the computer 18 may determineif there are additional TO_det data elements in the currently-selectedgroup that have not yet been selected for evaluation relative to thefirst TO_det data element that was flagged in step 807.3. Thatevaluation is described below in connection with step 807.6. If thereare no additional TO_det data elements in the currently-selected groupthat have not yet been selected for evaluation relative to the firstTO_det data element, and as indicated by the “no” branch, the computer18 may proceed to step 807.9, described below. If there are additionalTO_det data elements in the currently-selected group that have not yetbeen selected for evaluation relative to the first TO_det data element,and as indicated by the “yes” branch, the computer 18 may proceed tostep 807.5 and select the next TO_det data element in the queue that hasnot yet been evaluated relative to the first TO_det data element.

In step 807.6, the computer 18 may evaluate the first TO_det dataelement relative to the currently-selected TO_det data element from step807.5. As part of step 807.6, the computer 18 may determine if thetarget object image indicated by the first TO_det data element and thetarget object image indicated by the currently-selected TO_det dataelement are images of the same target object. The computer 18 may makethis determination in any of various ways. For example, the computer 18may use epi-polar geometry or trilinear tensors to determine if thesubimage ImSub(i,k) indicated by the first TO_det data element and thesubimage ImSub(i,k) indicated by the currently-selected TO_det dataelement are views of a common point in space that coincides with thecentroid position TO_centroid indicated by the first TO_det data elementand with the centroid position TO_centroid indicated by thecurrently-selected TO_det data element.

If the computer 18 determines that the target object images indicated bythe first and currently-selected TO_det data elements are not images ofthe same target object, the computer 18 may proceed to step 807.8(described below). If the computer 18 determines that the target objectimages indicated by the first and currently-selected TO_det dataelements are images of the same target object, the computer 18 mayproceed to step 807.7. In step 807.7, the computer 18 may flag thecurrently-selected TO_det data element for further processing describedbelow in connection with step 807.9.

In step 807.8, the computer 18 may determine if there are additionalTO_det data elements, in the queue of TO_det data elements of thecurrently-selected group, that remain for evaluation relative to thefirst TO_det data element. If so, and as indicated by the “yes” branch,step 807.5 may be repeated. If not, and as indicated by the no branch,the computer 18 may proceed to step 807.9 (described below).

If the computer 18 determines in step 807.4 that there are no additionalTO_det data elements in the currently-selected group that have not yetbeen selected for evaluation relative to the first TO_det data element,and as indicated by the “no” branch, the computer 18 may proceed to step807.9. The computer 18 may in step 807.9 convert all of the flaggedTO_det data elements, which the computer has now confirmed to correspondwith the same target object, into TO_conf data elements. This conversionmay remove the converted data elements from the queue of TO_det dataelements in the currently-selected group. As part of step 807.9, thecomputer 18 may assign a common target object identifier to the TO_confdata elements so that they may be easily distinguished from TO_conf dataelements corresponding to different target objects. In step 807.10, thecomputer 18 may determine if there are any remaining TO_det dataelements in the currently-selected group that have not been converted toTO_conf data elements. If so, and as indicated by the “yes” branch, step807.3 may be repeated. If not, and as indicated by the “no” branch, thecomputer 18 may proceed to step 807.11 and determine if there are anyadditional groups of TO_det data elements that have not yet beenselected. If yes, and as indicated by the “yes” branch, step 807.2 maybe repeated. If not, and as indicated by the “no” branch, the computer18 may proceed to step 808 (FIG. 8A).

In step 808 the computer 18 may determine, for each confirmed targetobject, a spatial position of that confirmed target object in the searchspace 11. The computer 18 may perform step 808 by, for example,performing additional steps such as those shown in FIG. 12 (e.g., thesteps of FIG. 12 may be a subroutine of the algorithm of FIGS. 8A and8B). In step 808.1, the computer 18 may sort and group the TO_conf dataelements, stored during one or more iterations of step 807.9, based ontarget object identifiers. A group of sorted TO_conf data elements maycomprise TO_conf data elements that all correspond to the same targetobject identifier. In step 808.2, the computer 18 may select one of thegroups of sorted TO_conf data elements. In step 808.3, the computer 18may determine if the currently-selected group of TO_conf data elementshas at least two TO_conf data elements. If not, there may beinsufficient data to determine a spatial position of the target objectcorresponding to the currently-selected group, and the computer 18 mayproceed to step 808.6 (described below) as indicated by the “no” branch.Otherwise, and as indicated by the “yes” branch, the computer 18 mayproceed to step 808.4.

In step 808.4, the computer 18 may determine a point approximating anintersection of vectors corresponding to each of the TO_conf dataelements in the currently-selected group. For example, each of theTO_conf data elements may indicate a target object centroid positionTO_centroid in an image Im(i) from a camera 14(i), a pan(i) angle forthat camera 14(i), and a tilt(i) angle for that camera 14(i). Based onthis information, and using the information described above inconnection with Table 1, the computer 18 may determine a target objectvector VTO (e.g., as described above in connection with FIGS. 5A and 5B)for the TO_conf data element. Because of imaging errors of one or morecameras and/or for other reasons, some or all of the target objectvectors calculated for the TO_conf data elements in thecurrently-selected group may coincide with skew lines and may not trulyintersect. However, an approximated intersection point can be calculatedby determining a point P in the search space 11 such that a sum of thesquares of the shortest distances, between the point P and each of thevectors VTO determined for the currently-selected group, is minimized.For example, for a currently-selected group of TO_conf data elementshaving G TO_conf data elements, the computer 18 may determine a point Pthat minimizes

[Σ_(g=1) ^(G) d(VTO _(g) ,P)]²,

wherein VTO_(g) is a target object vector corresponding to the g^(th)TO_conf data element of the currently-selected group, and d(VTO_(g), P)is the shortest distance between the point P and the target vectorVTO_(g).

In step 808.5, the computer 18 may store the position of the point P asthe current position of the target object having the target objectidentifier corresponding to the currently-selected group. The computer18 may also store a time (e.g., a current system time) with thatposition. In step 808.6, the computer 18 may determine if there areadditional TO_conf data element groups, determined from the sorting andgrouping in step 808.1, to be processed for determining a target objectposition. If so, and as indicated by the “yes” branch, the computer 18may repeat step 808.1. If not, and as indicated by the “no” branch, thecomputer 18 may proceed to step 809.

In step 809 (FIG. 8B), the computer 18 may assign, to each target objectfor which a position was determined in step 808, a corresponding subsetof K search points. A subset of search points assigned to a targetobject may comprise, for example 10 search points, 15 search points, 20search points, or another quantity of search points. For each subset ofsearch points, the computer 18 may position all of the search points inthat subset in spatial positions that are based on the positiondetermined for the corresponding target object. For example, thecomputer 18 may determine a spherical portion of the search space 11that is centered on the determined target object position and thatcomprises a radius r. Example values of r include 2 meters, 5 meters, 10meters, etc. The computer 18 may then randomly distribute the subset ofsearch points in that spherical portion of the search space. By placinga portion of the search points near a currently-known position of atarget object, the computer 18 may increase the probability that thetarget object will be detected in images captured during the next searchcycle.

In step 811, the computer 18 may distribute remaining search points thathave not been assigned to a target object. The computer 18 maydistribute those remaining search points throughout the search space 11using the same method used in step 801. Optionally, the computer 18 maysubtract any portions of the search space 11 determined in step 810 forindividual target objects, and may avoid distributing any of theremaining search points in any of those portions. FIG. 13 is a partiallyschematic elevational view of the system of FIG. 1 after distribution ofsearch points SP(k) in step 811. It is possible that a target objectdetected in a search cycle, and to which a subset of search points isassigned during that cycle, may escape detection in the next cycle. Ifthis occurs, the quantity of search points in a subset of search pointsassigned to that target object, and/or a size of a region in which thesearch points of that subset may be positioned relative to the lastknown position of that target object, may be increased in subsequentcycles (e.g., until the target object is again detected).

In step 812, the computer 18 may determine if a target object wasdetected during the current search cycle. If so, and as shown by the yesbranch, the computer 18 may proceed to step 813. In step 813, thecomputer 18 may initiate an audible alarm (e.g., actuate a siren, abuzzer, a voice recording, and/or other sound) and/or a visual alarm(e.g., a blinking light, a message on a display screen, and/or othervisual indication) to indicate that a target object has been detected inthe search space 11. If step 813 is reached during a search cyclefollowing a search cycle in which a target object was detected, apreviously-initiated alarm may be continued.

In step 814, the computer 18 may start or update a track for each of thetarget objects for which a position was determined in step 808. Thecomputer 18 may start and/or update the track(s) of detected targetobjects based on the position and time data stored in step 808. As partof step 814, the computer 18 may determine, for each of the targetobjects for which a position was determined in step 808, whether thattarget object is the same as a target object for which a position wasdetermined during a previous search cycle. Determining detections thatshould be correlated (e.g., determining that two detections are of thesame object) and fusion (combining a string of detections of the sameobject in a mathematical way to reduce error (e.g., by using low orderpolynomial fitting)) may be complicated by the presence of numeroustarget objects (e.g., a “swarm”) and by radical maneuvering of targetobjects. When target objects are numerous, one approach is to projectthe detections onto various datum planes to convert the 3D problem intoa 2D problem. By determining an optimal plane for which an orthogonalprojection operation may be performed, two close-by fliers may bedistinguished and treated (e.g., engaged with fire) separately. Also,projection operations may “bunch up” the detections of separate targetobjects, making them easier to segment from their brethren. Forradically maneuvering target objects, a useful principle is that anyobject with mass cannot instantaneously change direction or accelerate.For target objects such as UAVs, even those that can hover, any movementin a sufficiently short time interval may be indistinguishable from astraight line in space-time. Therefore, methods that assume straightline flight, sufficiently truncated in time, may be applied to themaneuvering case.

In step 815, the computer 18 may output (e.g., via a computer screen, anLED or OLED display device, and/or other video display device) dataindicating the position and/or track of target objects for whichpositions were determined in step 808 of the current search cycle. Fortargets objects that may have been detected but for which a positioncould not be determined (e.g., because only a single camera 14 capturedan image of the target object), the computer 18 may cause display of awarning indicating a possible detection, and further indicating thatthere is insufficient data to determine a position. As part of step 815,the computer 18 may also or alternatively output data indicating targetobject positions to a fire-control system that controls aiming of a gunor other countermeasure for disabling and/or destroying target objects.

If the computer 18 determines in step 812 that a target object was notdetected during the current search cycle, and as shown by the “no”branch, the computer 18 may proceed to step 816. In step 816, thecomputer 18 may discontinue audio and/or visual warnings (if any) thatwere active at the end of a previous search cycle. At the conclusion ofstep 815 or 816, a current search cycle may conclude, and the computer18 may proceed to step 802 (FIG. 8A) to begin a new search cycle.

Systems and methods such as are described herein may offer multipleadvantages. The computational load to determine whether target objectimages are present in subimages may be substantially less than thatneeded to process entire images from the subimages are selected. Thismay allow for substantially faster search cycles without need forexpensive computer equipment. Although performing target detection usingsubimages selected based on spatial sampling may miss a portion oftarget objects during a given cycle, changing positions of the searchpoints and/or orientations of the cameras reduce the probability of atarget object completely escaping detection. If a target object isdetected, search points may be assigned to that target object andrepositioned to increase the probability that the target object willcontinue to be detected. Detecting and tracking objects using an arrayof cameras may allow improved accuracy, relative to detecting andtracking with radar, at shorter ranges and/or in connection with smallerobjects. An array of cameras, pan/tilt mounts, computers and othercomponents of a system such as the system 10 may be substantially lessexpensive than a conventional radar. Moreover, an array of cameras mayoperate without emitting energy and may thereby avoid detection.Conversely, radar emits energy and is detectable, and may also pose apotential health hazard.

An array of cameras in a system similar to the system 10 may comprisecameras that are non-moving, or that move only in certain ways (e.g.,only panning or only tilting). Cameras used in a system such as thesystem 10 may be operable in the infrared (IR) spectrum so as to captureimages at night and/or in hazy or smoky conditions.

Cameras used in a system such as the system 10 may comprise video orstill cameras. If video cameras are used, for example, cameras may beconfigured to continuously record video. Such cameras may, on commandfrom the computer 18 or another computer, provide a frame of the videocorresponding to a particular time and, if the camera is moving, pan andtilt angles for the camera at that particular time. Also oralternatively, a system such as system 10 and using video cameras may beconfigured to perform a modified version of the method described inconnection with FIGS. 8A, 8B, 11, and 12 . In a modified step 802,cameras may capture a series of images with pan and tilt data for eachimage. Steps 803-805 may be performed, for each image in a series ofimages from a camera, in a manner similar to how described above inconnection with a single image from each camera.

A modified step 806 may be performed using one or more image processingalgorithms that detect a transient feature in a series of images. Forexample, the computer 18 may in a modified step 806 process a series ofM pixel by M pixel subimages, corresponding to the same search point,taken from slightly different positions in a series of images from asingle moving camera. A third-order filter (e.g., a Butterworth filter)may be applied to each subimage pixel position (e.g., each of the M²positions based on the M×M pixel array of the subimages) over the seriesof subimages. The Butterworth Filter is a third-order time series filterwhich may take a noisy raw signal and smooth it out to make it lessnoisy. The behavior of the filter may be controlled by a singleparameter, omegaT, set between 0 and 1. If omegaT=1.0, then the originalsignal, at the present instant, may result. If omegaT=0, then the outputmay eventually reach a constant DC value equal to the average of thehistory of the original signal. Appropriate selection of an intermediatevalue of omegaT results in a signal similar to the recent history of theoriginal, yet less noisy. The calculations to implement this filter aresimple, fast, and require very few remembered values. Every pixel'svalue may be based on a value from a subimage pixel plus a weighted sumof the recent history of that same pixel in other subimages, and a“smoothed out” version of the subimage obtained. The smoothed outversion may be subtracted from each actual subimage in a series toindicate a transient feature such as a target object. Additionalsoftware may be used capture the novelties and flag them for furtherprocessing. For example, the subimage from a series that reveals, aftersubtraction of the smoothed out subimage, a target object may beidentified. Additional steps of the method of FIGS. 8A, 8B, 11, and 12may be performed, based on that identified subimage, in a manner similarto that previously described.

Cameras in a system such as the system 10 need not be arranged around acircle, and may be arranged in other manners (e.g., around other shapes,in a grid, irregularly, etc.). Cameras in a system such as the system 10may be located at different heights relative to one another (e.g., someat or near ground level, some in towers, some on rooftops, etc.).Cameras may be located inside or outside a search space. For example, asearch space may extend beyond a ring of cameras positioned inside thesearch space.

A combination of wide FOV and narrow FOV cameras may be used in a systemsuch as the system 10. A wider FOV may increase the probability ofdetection, as the FOV may cover a larger portion of a search space andthus have a greater probability of capturing an image of a region withnumerous search points. However, a wider FOV may increase resolutionerror. A narrower FOV may cover a smaller portion of a search space andmay have less probability of capturing an image of a region withnumerous search points, but may have less resolution error and allow forgreater precision in determining target object position.

When projecting search points onto images from cameras having the searchpoints in the FOVs of those cameras (e.g., as described in connectionwith step 804 of FIG. 8A), the computer 18 may be configured to ignoresearch point projections that result in search point image positionsnear an edge of an image. For example, if subimages will be selectedbased on an M×M block of pixels centered on a search point imageposition (e.g., as described in connection with step 805 of FIG. 8A),the computer 18 may be configured to ignore projections that result in asearch point image position that is closer that M/2 pixels to an imageedge.

Target object detection (e.g., as described in connection with step 806of FIG. 8A) may comprise one or more additional steps to discriminatetarget objects. For example, one or more steps may be performed todetermine if a detected target object is a man-made object such as a UAVor a natural object such as a bird. Data for objects determined to benatural objects (e.g., birds) may be ignored to conserve processingpower and/or to help avoid use of UAV countermeasures against birds.Birds and UAVs may be distinguished in numerous ways. For example, birdsand UAVs may be distinguished based on motion signatures. If searchcycles are performed sufficiently fast, the motion characteristic ofbird movements may become detectable after several cycles. After atarget object is determined to be a bird, further tracking of thattarget object may be discontinued and/or information about that targetobject not sent to other systems (e.g., not sent to a fire controlcomputer of a weapon or other countermeasure). Also or alternatively, ifthe cameras 14 include video cameras, target object motion may beindependently analyzed by the cameras 14 (e.g., by control devices 30)to determine target objects that may be birds, and highlighting or othermarking added to images to indicate birds.

A system such as the system 10 may be configured to train a camera on adetected target object. For example, if a target object is detected, thecomputer 18 may send pan/tilt instructions to one of the cameras 14 tokeep the FOV of that camera 14 centered on the target object positionand/or estimated position (e.g., based on target object track). Evenwhile trained on a specific target object, however, that camera wouldstill be able to provide images for detection of other target objectswithin its FOV.

FIG. 14 is a block diagram of an example computer 1401, one or more ofwhich may be used to implement the computer 18, the control device(s)30, and/or other computer(s) and to perform operations such as thosedescribed herein. Computer 1401 may comprise one or more processors1402, one or more memories 1403, one or more input interface controllers1404, one or more output interface controllers 1405, and one or morenetwork interfaces 1406, all of which may communicate over one or morebusses 1407. Processor(s) 1402 may include any of various types ofcomputational devices such as, without limitation, programmablemicroprocessors. Processor(s) 1402 may execute instructions that causecomputer 1401 to perform one or more operations such as are describedherein. Memory(ies) 1403 may include any of various types ofnon-transitory machine-readable storage media such as, withoutlimitation, random access memory (RAM), read-only memory (ROM), FLASHmemory, magnetic tape or discs, optical discs, etc. Memory(ies) 1403 maybe volatile or non-volatile. Input interface controller(s) 1404 mayinclude hardware and/or software that allow user input devices (e.g., akeyboard, a mouse, a touch screen) to communicate data to processor(s)1402. Output interface controller(s) 1405 may include hardware and/orsoftware that allow user output devices (e.g., display screens,printers) to output user-understandable information based on data fromprocessor(s) 1402. Network interface(s) 1406 may include hardware and/orsoftware that allow processor(s) 1402 to communicate with processors ofother computers via one or more types of wired or wireless networks.Examples of network interfaces include, without limitation, Ethernetadaptors and Wi-Fi adaptors (e.g., operating in accordance with one ormore IEEE 802.11 WLAN standards).

Memory(ies) 1403 may store software 1408 that provides instructions toprocessor(s) 1402 that, when executed by processor(s) 1402, causecomputer 1401 to perform some or all operations such as are describedherein. Software 1408 may comprise machine-executable instructionsand/or other data, and may include both application software andoperating system software. Executable instructions that cause computer1401 to perform operations such as are described herein may also oralternatively be stored in other forms, e.g., as firmware or as hardwarelogic in an integrated circuit.

FIG. 15A is a graph showing estimated RMS error in meters, as a functionof range (e.g., for multiple cameras, a value based on a center of acircle on which the cameras are positioned), for 10,000 Monte Carlosimulations of a system similar to those described above. Thesimulations of FIG. 15A assume a system with six high-resolution camerasarranged in a circle having a radius of 750 meters, each having animaging element with 1920 columns by 1280 rows of pixels, and eachhaving a 2 degree FOV. The simulations further assumed a target objectat an altitude of 100 meters, with the cameras mounted at altitudes of 3meters. The simulations also assumed an error model with a 1 sigma pixelerror of 2 pixels, a 1 sigma pan angle error of 0.005 degrees ( ), and a1 sigma tilt angle error of 0.005 degrees. During each simulation, thepixel error, pan angle error, and tilt angle error for each camera wererandomly varied according to the error model. FIG. 15B is a graph oferror ellipsoid major axis dimension (in meters), as a function ofrange, for the simulations of FIG. 15A. FIG. 15C is a graph of errorellipsoid minor axis dimension (in meters), as a function of range, forthe simulations of FIG. 15A.

FIG. 15D is a graph showing estimated RMS error in meters, as a functionof range, for 10,000 Monte Carlo simulations of a system similar tothose described above. The simulations of FIG. 15D assume a system withsix low-resolution cameras arranged in a circle having a radius of 750meters, each having an imaging element with 1920 columns by 1280 rows ofpixels, and each having a 60 degree FOV. The simulations further assumeda target object at an altitude of 100 meters, with the cameras mountedat altitudes of 3 meters. The simulations also assumed an error modelwith a 1 sigma pixel error of 2 pixels, a 1 sigma pan angle error of0.005 degrees, and a 1 sigma tilt angle error of 0.005 degrees. Duringeach simulation, the pixel error, pan angle error, and tilt angle errorfor each camera were randomly varied according to the error model. FIG.15E is a graph of error ellipsoid major axis dimension (in meters), as afunction of range, for the simulations of FIG. 15D. FIG. 15F is a graphof error ellipsoid minor axis dimension (in meters), as a function ofrange, for the simulations of FIG. 15D.

For the avoidance of doubt, the present application includes, but is notlimited to, the subject-matter described in the following numberedclauses:

-   -   1. A method comprising determining, by one or more computing        devices, a plurality of search point spatial positions in a        three-dimensional search space.    -   2. The method of clause 1, comprising determining, based on the        search point spatial positions and on orientation data for a        plurality of cameras imaging at least portions of the search        space, a plurality of search point image positions, wherein each        of the search point image positions comprises a location in an        image from a camera, of the plurality of cameras, to which a        search point spatial position, of the plurality of search point        spatial positions, is projected.    -   3. The method of any of clauses 1-2, comprising selecting, from        the images in which the search point image positions are        located, subimages corresponding to the search point image        positions.    -   4. The method of any of clauses 1-3, comprising determining,        from the subimages, a plurality of subimages comprising a target        object image.    -   5. The method of any of clauses 1-4, comprising determining,        based on the plurality of subimages comprising a target object        image, a position of a target object in the search space.    -   6. The method of any of clauses 1-5, comprising outputting        information indicating the position of the target object.    -   7. The method of any of clauses 1-6, wherein each of the        subimages corresponds to a search point image position, of the        plurality of search point image positions, and is less than all        of the image in which the corresponding search point image        position is located.    -   8. The method of any of clauses 1-7, comprising assigning a        subset of a plurality of search points to the target object;        determining, based on the position of the target object, search        point spatial positions in the search space for the search        points of the subset; and determining, without regard to the        position of the target object, search point spatial positions in        the search space for remaining search points of the plurality of        search points.    -   9. The method of clause 8, wherein the determining search point        spatial positions in the search space for the search points of        the subset comprises determining positions within a        predetermined distance of the position of the target object.    -   10. The method of any of clauses 1-9, wherein the plurality of        subimages comprising a target object image is less than all of        the selected subimages.    -   11. The method of any of clauses 1-10, wherein the plurality of        cameras comprises at least six cameras and the plurality of        search point spatial positions comprises at least five hundred        search point spatial positions.    -   12. The method of any of clauses 1-11, wherein each camera, of        the plurality of cameras, corresponds to a field of view (FOV),        wherein at least a portion of the FOVs are smaller than the        search space, and wherein each camera, of the plurality of        cameras, is moving independently of the other cameras of the        plurality of cameras.    -   13. The method of any of clauses 1-12, wherein the determining        the plurality of search point spatial positions comprises, for        each search point spatial position of the plurality of search        point spatial positions, selecting a random location in the        search space.    -   14. The method of any of clauses 1-13, wherein each camera, of        the plurality of cameras, corresponds to a field of view (FOV),        and wherein at least one of the FOVs is narrower than at least        one other of the FOVs.    -   15. The method of any of clauses 1-14, wherein the target object        comprises an unmanned aerial vehicle (UAV), and wherein the        determining the plurality of subimages comprises determining        that a target object image is not an image of a bird.    -   16. The method of any of clauses 1-15, wherein at least two        cameras, of the plurality of cameras, are separated by a        distance of at least 100 meters.    -   17. The method of any of clauses 1-16, wherein the search space        covers an area of at least 10,000 square meters.    -   18. The method of any of clauses 1-17, comprising determining        whether two subimages, of the plurality of subimages comprising        a target object image, comprise target object images        corresponding to a same target object.    -   19. An apparatus comprising one or more processors and memory        storing instructions that, when executed by the one or more        processors, cause the apparatus to perform the method of any of        clauses 1-18.    -   20. A system comprising the apparatus of clause 19 and a camera        configured to provide at least one of the images.    -   21. A non transitory computer-readable medium storing        instructions that, when executed, cause performance of the        method of any of clauses 1-18.    -   22. A method comprising determining, based on a plurality of        search point spatial positions distributed throughout a        three-dimensional search space, and from images from a plurality        of cameras positioned to image different portions of the search        space, a set of subimages corresponding to at least a portion of        the search point spatial positions.    -   23. The method of clause 22, comprising determining, from the        subimages, a plurality of subimages comprising a target object        image.    -   24. The method of any of clauses 22-23, comprising determining        whether two subimages, of the plurality of subimages comprising        a target object image, comprise target object images        corresponding to a same target object.    -   25. The method of any of clauses 22-24, comprising determining,        based on the plurality of subimages comprising a target object        image and on a determination of whether the two subimages        comprise target object images corresponding to a same target        object, positions of target objects in the search space.    -   26. The method of any of clauses 22-25, comprising outputting        information indicating the positions of the target objects.    -   27. The method of any of clauses 22-26, comprising assigning, to        each of the target objects, a corresponding subset of a        plurality of search points; and determining, for each of the        target objects, and based on the positions of the target        objects, search point spatial positions in the search space for        the search points of the corresponding subsets.    -   28. The method of any of clauses 22-27, wherein the determining        search point spatial positions in the search space for the        search points of the corresponding subsets comprises, for each        of the subsets, determining positions within a predetermined        distance of the position of the corresponding target object.    -   29. The method of any of clauses 22-28, wherein the plurality of        subimages comprising a target object image is less than all of        the set of subimages.    -   30. The method of any of clauses 22-29, wherein each camera, of        the plurality of cameras, corresponds to a field of view (FOV),        wherein at least a portion of the FOVs are smaller than the        search space, and wherein each camera, of the plurality of        cameras, is moving independently of the other cameras of the        plurality of cameras.    -   31. The method of any of clauses 22-30, comprising selecting,        for each search point spatial position of the plurality of        search point spatial positions, a random location in the search        space.    -   32. The method of any of clauses 22-31, wherein the target        objects comprise unmanned aerial vehicles (UAVs), and wherein        the determining the plurality of subimages comprises determining        that a target object image is not an image of a bird.    -   33. An apparatus comprising one or more processors and memory        storing instructions that, when executed by the one or more        processors, cause the apparatus to perform the method of any of        clauses 22-32.    -   34. A system comprising the apparatus of clause 33 and a camera        configured to provide at least one of the images.    -   35. A non transitory computer-readable medium storing        instructions that, when executed, cause performance of the        method of any of clauses 22-32.    -   36. A method comprising determining, based on images from a        plurality of cameras positioned to image portions of a search        space, subimages indicating detection of an unmanned aerial        vehicle (UAV) in the search space, wherein at least two cameras,        of the plurality of cameras, are separated by a distance of at        least 100 meters, and wherein the search space covers an area of        at least 10,000 square meters.    -   37. The method of clause 36, comprising determining, based on        the subimages indicating detection of a UAV in the search space,        a position of a UAV in the search space.    -   38. The method of any of clauses 36-37, comprising outputting        information indicating the position of the UAV.    -   39. The method of any of clauses 36-38, wherein each camera, of        the plurality of cameras, corresponds to a field of view (FOV),        wherein at least a portion of the FOVs are smaller than the        search space, and wherein each camera, of the plurality of        cameras, is moving independently of the other cameras of the        plurality of cameras.    -   40. The method of any of clauses 36-39, comprising assigning a        subset of a plurality of search points to the UAV; determining,        based on the position of the UAV, search point spatial positions        in the search space for the search points of the subset;        determining, without regard to the position of the UAV, search        point spatial positions in the search space for remaining search        points of the plurality of search points; selecting, from        additional images from the plurality of cameras and based on the        plurality of search points, additional subimages; and        determining, based on at least a portion of the additional        subimages, a second position of the UAV in the search space.    -   41. The method of any of clauses 36-40, wherein the determining        the subimages comprises selecting subimages based on        projections, of randomly selected search point spatial positions        in the search space, onto the images.    -   42. An apparatus comprising one or more processors and memory        storing instructions that, when executed by the one or more        processors, cause the apparatus to perform the method of any of        clauses 36-41.    -   43. A system comprising the apparatus of clause 42 and a camera        configured to provide at least one of the images.    -   44. A non transitory computer-readable medium storing        instructions that, when executed, cause performance of the        method of any of clauses 36-41.

The foregoing has been presented for purposes of example. The foregoingis not intended to be exhaustive or to limit features to the preciseform disclosed. The examples discussed herein were chosen and describedin order to explain principles and the nature of various examples andtheir practical application to enable one skilled in the art to usethese and other implementations with various modifications as are suitedto the particular use contemplated. The scope of this disclosureencompasses, but is not limited to, any and all combinations,subcombinations, and permutations of structure, operations, and/or otherfeatures described herein and in the accompanying drawing figures.

1. A method comprising: determining, based on images from a plurality ofcameras positioned to image portions of a search space, subimagesindicating detection of an unmanned aerial vehicle (UAV) in the searchspace, wherein at least two cameras, of the plurality of cameras, areseparated by a distance of at least 100 meters, and wherein the searchspace covers an area of at least 10,000 square meters; determining,based on the subimages indicating detection of the UAV in the searchspace, a position of the UAV in the search space; and outputtinginformation indicating the position of the UAV.
 2. The method of claim1, wherein each camera, of the plurality of cameras, corresponds to afield of view (FOV), wherein at least a portion of the FOVs are smallerthan the search space, and wherein each camera, of the plurality ofcameras, is capable of moving independently of the other cameras of theplurality of cameras.
 3. The method of claim 1, further comprising:assigning a subset of a plurality of search points to the UAV;determining, based on the position of the UAV, search point spatialpositions in the search space for the search points of the subset;determining, without regard to the position of the UAV, search pointspatial positions in the search space for remaining search points of theplurality of search points; selecting, from additional images from theplurality of cameras and based on the plurality of search points,additional subimages; and determining, based on at least a portion ofthe additional subimages, a second position of the UAV in the searchspace.
 4. The method of claim 1, wherein the determining the subimagescomprises selecting subimages based on projections, of randomly selectedsearch point spatial positions in the search space, onto the images. 5.The method of claim 1, further comprising: performing, based on theinformation indicating the position of the UAV, one or morecountermeasures to disable or destroy the UAV.
 6. The method of claim 1,further comprising: selecting, for each search point spatial position ofa plurality of search point spatial positions, a random location in thesearch space.
 7. The method of claim 1, further comprising: ignoring,based on a determination that at least one subimage comprises at leastone of a man-made object or a natural object, the at least one subimage.8. A computing device comprising: one or more processors; and memorystoring instructions that, when executed by the one or more processors,cause the computing device to: determine, based on images from aplurality of cameras positioned to image portions of a search space,subimages indicating detection of an unmanned aerial vehicle (UAV) inthe search space, wherein at least two cameras, of the plurality ofcameras, are separated by a distance of at least 100 meters, and whereinthe search space covers an area of at least 10,000 square meters;determine, based on the subimages indicating detection of the UAV in thesearch space, a position of the UAV in the search space; and outputinformation indicating the position of the UAV.
 9. The computing deviceof claim 8, wherein each camera, of the plurality of cameras,corresponds to a field of view (FOV), wherein at least a portion of theFOVs are smaller than the search space, and wherein each camera, of theplurality of cameras, is capable of moving independently of the othercameras of the plurality of cameras.
 10. The computing device of claim8, wherein the instructions, when executed by the one or moreprocessors, cause the computing device to: assign a subset of aplurality of search points to the UAV; determine, based on the positionof the UAV, search point spatial positions in the search space for thesearch points of the subset; determine, without regard to the positionof the UAV, search point spatial positions in the search space forremaining search points of the plurality of search points; select, fromadditional images from the plurality of cameras and based on theplurality of search points, additional subimages; and determine, basedon at least a portion of the additional subimages, a second position ofthe UAV in the search space.
 11. The computing device of claim 8,wherein the instructions, when executed by the one or more processors,cause the computing device to determine the subimages by selectingsubimages based on projections, of randomly selected search pointspatial positions in the search space, onto the images.
 12. Thecomputing device of claim 8, wherein the instructions, when executed bythe one or more processors, cause the computing device to: perform,based on the information indicating the position of the UAV, one or morecountermeasures to disable or destroy the UAV.
 13. The computing deviceof claim 8, wherein the instructions, when executed by the one or moreprocessors, cause the computing device to: select, for each search pointspatial position of a plurality of search point spatial positions, arandom location in the search space.
 14. The computing device of claim8, wherein the instructions, when executed by the one or moreprocessors, cause the computing device to: ignore, based on adetermination that at least one subimage comprises at least one of aman-made object or a natural object, the at least one subimage.
 15. Anon-transitory computer-readable medium comprising instructions that,when executed, cause a computing device to: determine, based on imagesfrom a plurality of cameras positioned to image portions of a searchspace, subimages indicating detection of an unmanned aerial vehicle(UAV) in the search space, wherein at least two cameras, of theplurality of cameras, are separated by a distance of at least 100meters, and wherein the search space covers an area of at least 10,000square meters; determine, based on the subimages indicating detection ofthe UAV in the search space, a position of the UAV in the search space;and output information indicating the position of the UAV.
 16. Thenon-transitory computer-readable medium of claim 15, wherein eachcamera, of the plurality of cameras, corresponds to a field of view(FOV), wherein at least a portion of the FOVs are smaller than thesearch space, and wherein each camera, of the plurality of cameras, iscapable of moving independently of the other cameras of the plurality ofcameras.
 17. The non-transitory computer-readable medium of claim 15,wherein the instructions, when executed, cause the computing device to:assign a subset of a plurality of search points to the UAV; determine,based on the position of the UAV, search point spatial positions in thesearch space for the search points of the subset; determine, withoutregard to the position of the UAV, search point spatial positions in thesearch space for remaining search points of the plurality of searchpoints; select, from additional images from the plurality of cameras andbased on the plurality of search points, additional subimages; anddetermine, based on at least a portion of the additional subimages, asecond position of the UAV in the search space.
 18. The non-transitorycomputer-readable medium of claim 15, wherein the instructions, whenexecuted, cause the computing device to determine the subimages byselecting subimages based on projections, of randomly selected searchpoint spatial positions in the search space, onto the images.
 19. Thenon-transitory computer-readable medium of claim 15, wherein theinstructions, when executed, cause the computing device to: perform,based on the information indicating the position of the UAV, one or morecountermeasures to disable or destroy the UAV.
 20. The non-transitorycomputer-readable medium of claim 15, wherein the instructions, whenexecuted, cause the computing device to: select, for each search pointspatial position of a plurality of search point spatial positions, arandom location in the search space.
 21. The non-transitorycomputer-readable medium of claim 15, wherein the instructions, whenexecuted, cause the computing device to: ignore, based on adetermination that at least one subimage comprises at least one of aman-made object or a natural object, the at least one subimage.